package org.vineatoum.view.utils;

import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.event.InputEvent;

import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.JTree;
import javax.swing.TransferHandler;
import javax.swing.TransferHandler.TransferSupport;
import javax.swing.tree.DefaultMutableTreeNode;

import org.vineatoum.business.Exploitation;
import org.vineatoum.business.abstraction.BusinessAbstract;
import org.vineatoum.business.state.abstraction.VinAbstract;

public class BusinessListTransfertHandler extends TransferHandler {

	  /**
	   * Crée un objet transférable adapté, donc un PersonneTransferable.
	   * Reéoit comme paramétre la source du drag and drop
	   * (ce qui permet de partager des PersonneTransferHandler)
	   */
	@Override
	  protected Transferable createTransferable(JComponent c) {        
			
			JTree tree =  (JTree) c;
		
			Object vin  = ((DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent()).getUserObject();
			
			if(vin instanceof BusinessAbstract)
			{
				
				return new TransferableBusinessAbstract((BusinessAbstract) vin);
				
			}
			else if(vin instanceof VinAbstract)
			{
				
				return new TransferableVinAbstract((VinAbstract) vin);
			
			}
	        return null;
	  }

	  /**
	   * Permet de dire si le drag est possible. Dans notre cas, il l'est toujours.
	   * cette méthode peut renvoyer COPY, NONE, MOVE, COPY_OR_MOVE.
	   * Si NONE est renvoyé, le drag and drop sera impossible.
	   */   
	@Override
	  public int getSourceActions(JComponent c) {
	        return COPY;
	  }


}
